package com.ydl.learning.flink.demo.transformations

import com.ydl.learning.flink.demo.Utils
import org.apache.flink.api.scala._

/**
 * 交叉计算，默认计算笛卡尔积
 * 也可以指定具体计算函数
 *
 * @author ydl
 * @since 2020/10/13
 */
object CrossDemo extends App with Utils {
  val input1 = env.fromElements("a", "b", "c")
  val input2 = env.fromElements("1", "2")
  //笛卡尔积
  input2.cross(input1).print()

  //指定计算函数
  input1.cross(input2) {
    (input1, input2) => {
      input1 + "|" + input2
    }
  }.print()

  //特殊的交叉操作
  //小表交叉大表，明确告诉flink哪个表大，哪个表小
  input1.crossWithHuge(input2).print()
  //大表交叉小表
  input2.crossWithTiny(input1).print()
}
